package com.hauwei.huaweishop.controller;

import com.hauwei.huaweishop.common.ResultMapUtils;
import com.hauwei.huaweishop.entity.ShopTypes;
import com.hauwei.huaweishop.entity.Users;
import com.hauwei.huaweishop.service.UsersService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 用户的Controller类
 */
@RestController
@Slf4j
@RequestMapping("/users")
@CrossOrigin // 跨域服务
public class UsersController {
    /**
     * 注入Service
     */
    @Autowired
    private UsersService usersService;

    //@RequestMapping("/toLogin")
    //@ResponseBody
    //public Object toLogin(@RequestBody Users users){
    //    log.info("前端传来的用户信息：[{}]", users);
    //    try{
    //        Users userDB = usersService.toLogin(users);
    //        return ResultMapUtils.getHashMapLogin(true, "1", "提示：登录成功",userDB);
    //    }catch (Exception e){
    //        return ResultMapUtils.getHashMapLogin(false, "2","提示，登陆失败",e.getMessage());
    //    }
    //}

    /**
     * 用户登录方法
     * @param users
     * @return
     */
    @RequestMapping("/toLogin")
    public Map<String, Object> toLogin(@RequestBody Users users){
        log.info("前端传来的用户信息：[{}]", users);
        Map<String, Object> resultMap = new HashMap<>();
        try{
            // 用户登录方法 得到返回的用户信息
            Users userDB = usersService.toLogin(users);
            resultMap.put("status", true);
            resultMap.put("msg", "提示：登录成功");
            resultMap.put("userDB", userDB);
        }catch (Exception e){
            resultMap.put("status", false);
            resultMap.put("msg", "提示："+e.getMessage());
        }
        return resultMap;
    }

    @RequestMapping("/regist")
    public Map<String, Object> regist(@RequestBody Users users){
        log.info("用户信息：[{}]", users);
        Map<String, Object> resultMap = new HashMap<>();
        try {
            usersService.register(users);
            resultMap.put("status", true);
            resultMap.put("msg", "注册成功");
        }catch (Exception e){
            resultMap.put("status", false);
            resultMap.put("msg", "提示："+e.getMessage());
        }
        return resultMap;
    }

    /**
     * 分页查询
     * @return
     */
    @RequestMapping("/findUsersPage")
    public Map<String, Object> findUsersPage(@RequestParam(defaultValue = "1") int pageNum,
                                            @RequestParam(defaultValue = "10")int pageSize){
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 查询员工的信息
            List<Users> usersList = usersService.queryUsersList();
            resultMap.put("records", usersList);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户查询成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户查询失败");
        }
        return resultMap;
    }

    /**
     * 查找所有
     * @return
     */
    @RequestMapping("/findAllUsers")
    public Map<String, Object> findAllUsers(){
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 查询员工的信息
            List<Users> usersList = usersService.queryUsersList();
            resultMap.put("records", usersList);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户查询成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户查询失败");
        }
        return resultMap;
    }

    /**
     * 根据id查询
     * @param id
     * @return
     */
    @RequestMapping("/findUsersById")
    public Map<String, Object> findUsersById(Integer id){
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 查询员工的信息
            Users users = usersService.queryByUid(id);
            resultMap.put("records", users);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户查询成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户查询失败");
        }
        return resultMap;
    }

    /**
     * 根据名称查询
     * @param name
     * @return
     */
    @RequestMapping("/findUsersByName")
    public Map<String, Object> findUsersByName(String name){
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 查询员工的信息
            Users users = usersService.queryByUsenamer(name);
            resultMap.put("records", users);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户查询成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户查询失败");
        }
        return resultMap;
    }

    /**
     * 根据id删除
     * @param id
     * @return
     */
    @RequestMapping("/deletUsersById")
    public Map<String, Object> deletUsersById(Integer id){
        log.info("删除信息id：[{}]", id);
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 删除员工的信息
            usersService.deleteUsersByUid(id);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户删除成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户删除失败");
        }
        return resultMap;
    }

    /**
     * 根据name删除
     * @param name
     * @return
     */
    @RequestMapping("/deletUsersByName")
    public Map<String, Object> deletUsersByName(String name){
        log.info("删除信息name：[{}]", name);
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 删除员工的信息
            usersService.deleteUsersByUname(name);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户删除成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户删除失败");
        }
        return resultMap;
    }
    @RequestMapping("/updateUsers")
    public Map<String, Object> updateUsers(Users users){
        log.info("修改信息：[{}]", users);
        Map<String, Object> resultMap = new HashMap<>();
        try {
            // 修改员工的信息
            usersService.updateUsers(users);
            resultMap.put("status", true);
            resultMap.put("code", 200);
            resultMap.put("msg", "用户修改成功");
        }catch (Exception e){
            e.printStackTrace();
            resultMap.put("status", false);
            resultMap.put("code", 500);
            resultMap.put("msg", "用户修改失败");
        }
        return resultMap;
    }

}
